]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
boxpointer: Trigger a relayout when setting position
authorMarco Trevisan (Treviño) <mail@3v1n0.net>
Mon, 17 Jun 2019 10:31:48 +0000 (12:31 +0200)
committerMarco Trevisan (Treviño) <mail@3v1n0.net>
Mon, 17 Jun 2019 12:22:40 +0000 (14:22 +0200)
Since the repositioning is now done during allocation, we can just queue
a relayout when setting the boxpointer positioning via the source actor.

As per this _relayout() and _updateFlip now needs to be called during allocation
only and with an allocation box set.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/576

js/ui/boxpointer.js

index 2f4975a29e2990e93cebe00bd6fb326ab5b543ab..3c704d2d3427479e09f00a70f9f5eb17f432dbcc 100644 (file)
@@ -455,10 +455,6 @@ var BoxPointer = GObject.registerClass({
     }
 
     setPosition(sourceActor, alignment) {
-        // We need to show it now to force an allocation,
-        // so that we can query the correct size.
-        this.show();
-
         if (!this._sourceActor || sourceActor != this._sourceActor) {
             if (this._sourceActorDestroyId) {
                 this._sourceActor.disconnect(this._sourceActorDestroyId);
@@ -474,13 +470,10 @@ var BoxPointer = GObject.registerClass({
                 })
             }
         }
-        this._arrowAlignment = alignment;
 
-        if (!this._sourceActor)
-            return;
+        this._arrowAlignment = alignment;
 
-        this._reposition();
-        this._updateFlip();
+        this.queue_relayout();
     }
 
     setSourceAlignment(alignment) {
@@ -605,14 +598,8 @@ var BoxPointer = GObject.registerClass({
             parent = parent.get_parent();
         }
 
-        x = Math.floor(x);
-        y = Math.floor(y);
-
         // Actually set the position
-        if (!allocationBox)
-            this.set_position(x, y);
-        else
-            allocationBox.set_origin(x, y);
+        allocationBox.set_origin(Math.floor(x), Math.floor(y));
     }
 
     // @origin: Coordinate specifying middle of the arrow, along